Spring Cloud Sleuth এবং Zipkin
Spring Cloud Sleuth একটি লাইটওয়েট ট্রেসিং সলিউশন যা মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। এটি একটি সার্ভিস কলের ট্রেস তৈরি করে, যার মাধ্যমে ডিস্ট্রিবিউটেড সিস্টেমের বিভিন্ন সার্ভিসের মধ্যে ডেটার প্রবাহ ট্র্যাক করা যায়। এটি সার্ভিসের পারফরম্যান্স এবং ডিবাগিং সমস্যা সমাধানে সাহায্য করে।
Zipkin একটি ডিসট্রিবিউটেড ট্রেসিং সিস্টেম যা Spring Cloud Sleuth এর সাথে ইন্টিগ্রেট করা যেতে পারে। Zipkin মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস কল ট্র্যাকিং, ডেটা সংগ্রহ এবং বিশ্লেষণ করার জন্য ব্যবহৃত হয়। Zipkin সার্ভিস কলগুলোর সময়, সার্ভিসের মধ্যে ডেটা স্থানান্তর এবং ল্যাটেন্সি বিশ্লেষণ করতে সাহায্য করে।
Spring Cloud Sleuth এবং Zipkin একত্রে কাজ করলে আপনি আপনার মাইক্রোসার্ভিস অ্যাপ্লিকেশনে ট্রেসিং এবং লগিং সক্ষম করতে পারবেন, যা সার্ভিসের কার্যকারিতা মনিটর এবং ত্রুটি সনাক্ত করতে সাহায্য করে।
Sleuth এর সাথে Zipkin Integration কনফিগারেশন
Spring Cloud Sleuth এবং Zipkin এর মধ্যে ইন্টিগ্রেশন কনফিগার করার জন্য কয়েকটি সহজ পদক্ষেপ রয়েছে। নিম্নলিখিত নির্দেশিকাগুলি অনুসরণ করে আপনি আপনার Spring Boot অ্যাপ্লিকেশনে Sleuth এবং Zipkin ইন্টিগ্রেট করতে পারবেন।
১. Maven Dependency যুক্ত করা
প্রথমে আপনার pom.xml ফাইলে নিচের ডিপেনডেন্সিগুলি যুক্ত করতে হবে:
<dependencies>
<!-- Spring Cloud Sleuth -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Zipkin Dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- Spring Boot Starter Web (if not already included) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
এখানে spring-cloud-starter-sleuth এবং spring-cloud-starter-zipkin ডিপেনডেন্সি আপনার অ্যাপ্লিকেশনে Sleuth এবং Zipkin-এর কার্যকারিতা সক্ষম করবে।
২. application.properties বা application.yml কনফিগার করা
এখন application.properties বা application.yml ফাইলে Zipkin সার্ভারের URL এবং অন্যান্য প্রয়োজনীয় কনফিগারেশন সেট করতে হবে।
application.properties:
# Zipkin Server URL (Replace with your Zipkin server address)
spring.zipkin.base-url=http://localhost:9411
# Enable Spring Cloud Sleuth
spring.sleuth.enabled=true
# Sampling Rate (0.1 means 10% of requests will be traced)
spring.sleuth.sampler.probability=1.0
application.yml:
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
enabled: true
sampler:
probability: 1.0
এখানে, spring.zipkin.base-url Zipkin সার্ভারের URL নির্দেশ করে। spring.sleuth.sampler.probability এই কনফিগারেশনটি নির্ধারণ করে যে, সার্ভিস কত শতাংশ ট্রেসিং করবে। 1.0 মানে ১০০% ট্রেসিং।
৩. Zipkin সার্ভার চালু করা
Zipkin সার্ভার চলমান থাকতে হবে যাতে এটি ট্রেস ডেটা গ্রহণ করতে পারে। আপনি Zipkin সার্ভার Docker ব্যবহার করে চালু করতে পারেন:
docker run -d -p 9411:9411 openzipkin/zipkin
এটি Zipkin সার্ভারকে http://localhost:9411 এ চালু করবে। এখন আপনার অ্যাপ্লিকেশন Zipkin সার্ভারে ট্রেস ডেটা পাঠাতে সক্ষম হবে।
৪. Spring Boot অ্যাপ্লিকেশন তৈরি করা
Spring Boot অ্যাপ্লিকেশনে Sleuth ট্রেসিং সক্ষম করতে সাধারণত কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন হয় না, কারণ spring-cloud-starter-sleuth অটোমেটিক্যালি Sleuth ট্রেসিং সক্ষম করে দেয়। তবে, আপনি যদি কাস্টম ট্রেস বা লগিং যুক্ত করতে চান, তবে Tracer Bean ব্যবহার করতে পারেন।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.cloud.sleuth.Tracer;
@RestController
public class MyController {
@Autowired
private Tracer tracer;
@GetMapping("/trace")
public String trace() {
tracer.currentSpan().tag("custom-tag", "value");
return "Trace ID: " + tracer.currentSpan().context().traceId();
}
}
এখানে, Tracer Bean ব্যবহার করে আমরা কাস্টম ট্যাগ যোগ করছি এবং ট্রেস আইডি রিটার্ন করছি।
৫. Logback কনফিগারেশন (Optional)
Spring Cloud Sleuth ট্রেসিং তথ্য লগিংয়ের জন্য Logback ব্যবহার করতে পারে। আপনার logback-spring.xml ফাইলে নিচের কনফিগারেশন যুক্ত করতে পারেন যাতে ট্রেসিং তথ্য লোগ ফাইলে আসে।
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} - %5level - %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
এটি লগ ফাইলে লগিংয়ের সাথে ট্রেস আইডি, স্প্যান আইডি এবং অন্যান্য ট্রেসিং সম্পর্কিত তথ্য অন্তর্ভুক্ত করবে।
৬. Zipkin Dashboard এ ট্রেস দেখা
Zipkin সার্ভার চালু থাকার পর আপনি Zipkin ড্যাশবোর্ডে গিয়ে ট্রেসিং ডেটা দেখতে পারবেন। Zipkin ড্যাশবোর্ডে http://localhost:9411 এ গিয়ে, আপনি ট্রেস, স্প্যান এবং বিভিন্ন সার্ভিসের পারফরম্যান্স বিশ্লেষণ করতে পারবেন।
সারাংশ
Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন ডিস্ট্রিবিউটেড ট্রেসিং এবং মাইক্রোসার্ভিস আর্কিটেকচারে কার্যক্ষমতা মনিটরিং করার জন্য একটি শক্তিশালী সলিউশন প্রদান করে। Spring Cloud Sleuth সার্ভিসের মধ্যে ট্রেস তৈরি করে এবং Zipkin ট্রেসিং তথ্য সংগ্রহ করে এবং পারফরম্যান্স বিশ্লেষণ করতে সাহায্য করে। এটি ডেভেলপারদের অ্যাপ্লিকেশনের কার্যকারিতা বিশ্লেষণ এবং ডিবাগিং করতে সহায়ক হয়। Spring Cloud Sleuth এবং Zipkin ইন্টিগ্রেশন সেটআপ করা সহজ এবং কার্যকর, এবং এটি মাইক্রোসার্ভিস ডিজাইনের একটি অপরিহার্য অংশ হয়ে উঠেছে।
Read more